import time
import threading
import win32api
import win32con

""""
作用:点击指定位置，不占用鼠标
1. 移动鼠标到目标位置
2. 3秒后获取坐标
3. 5秒后开始点击该位置
4. Ctrl+C 停止
"""

def get_mouse_position():
    x, y = win32api.GetCursorPos()
    print(f"当前鼠标坐标: ({x}, {y})")
    return x, y

def click_at(x, y):
    # 保存原鼠标位置
    old_x, old_y = win32api.GetCursorPos()

    # 移动到目标坐标
    win32api.SetCursorPos((x, y))

    # 模拟点击
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

    # 恢复鼠标原位置
    win32api.SetCursorPos((old_x, old_y))

def keep_click(x, y, interval=0.1):
    def _loop():
        print(f"开始点击屏幕绝对坐标 ({x}, {y})，间隔 {interval}s，可 Ctrl+C 停止")
        while True:
            click_at(x, y)
            time.sleep(interval)
    t = threading.Thread(target=_loop, daemon=True)
    t.start()

if __name__ == "__main__":
    print("请移动鼠标到目标位置，3秒后获取坐标...")
    time.sleep(3)
    x, y = get_mouse_position()
    print("5秒后开始点击该位置...")
    time.sleep(5)
    keep_click(x, y, interval=0.3)

    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        print("\n用户终止，程序已退出。")
